#============================================
# 路由匹配
# 发送至所有人
# #路由匹配
# 请输入消息...
# url(r'test'，views. test)，
# url(r'testadd' , views . testadd )
# url方法第一个参数是正则表达式
# 只要第一个参数正则表达式能够匹配到内容那么就会立刻停止往下匹配
# 直接执行对应的视图函数
# 你在输入ur1的时候会默认加斜杠
# django内部帮你做到重定向
# -次匹配不行
# ur1后面加斜杠再来- -次
# #取消自动加斜杠
# APPEND_ SLASH = False/True #默认是自动加斜杠的

# urlpatterns =[
# url(r'^admin/', admin.site.urls),
# #首页
# url(r'^$'，views.home)，
# #路由匹配
# url(r'^test/$' , views.test),
# url (r'^testadd/$ ' , views . testadd),
# #尾页(了解)
# url(r'', views.error)，
# ]
#============================================
# 有名无名分组
# 可以给正则表达式起一个别名
# url(r'^testadd/ (?P<year>\d+)' , views . testadd)
# def testadd( request, year):
# print (year )
# return HttpResponse( ' testadd ' )
# #有名分组就是将括号内正则表达 式匹配到的内容当作关键字参数传递给后面的视图函数
# 无名有名是否可以混合使用
# 嘻嘻不能混用
# 但是同一个分组可以使用N多次
# #单个的分组可以使用多次
# url(r'^ index/(\d+)/(\d+)/(\d+)/' ,views. index),
# url(r'^ index/(?P<year>\d+)/(?P<age>\d+)/ (?P<month>\d+)/' ,views . index),
#============================================
# 路由匹配
# #通过一些方法得到一个结果该结果可以直接访问对应的ur 1触发视图函数
# #先给路由与视图函数起一个别名
# url(r'^ func_ _kkk/' ，views. func, name='ooo' )
# #反向解析
# #后端反向解析
# from django. shcottcuts import render , HttpResponse , redirect, reverse
# reverse( 'ooo' ，args =(1,))
# #前端反向解析
# <a href="{% url 'ooo’ 1}">111</a>
#============================================
# 无名有名分组反向解析
# #无名分组反向解析
# url(r'^ index/(\d+)/' ,views . index , name=' xxx' )
# I
# #前端
# {名url 'XXx’ 123号}
# #后端
# reverse( 'XXX'，args=(1, ))
# 这个数字写代码的时候应该放什么
# 数字一般情况下放的是数据的主键值数据的编辑和删除
# url(r'^edit/(\d+)/',views .edit , name= 'xxx')
# def edit (request,edit_ id) :
# reverse( 'xxx' ,args=(edit_ id,))
# {8for user_ _obj in user_ queryset号}
# <a href="{8 url 'XXX’user_ obj.id号}">编辑</a>
# {8endfor&}
# 今天每个人都必须完成的作业(******) 
# 利用无名有名反向解析完成数据的增删改查

# #有名分组反向解析
# url(r'^ func/ (?P<year>\d+)/' ,views . func, name= 'oo0' )
# #前端
# <a href="{% url 'ooo’ year=123 号}">111</a> 了解
# <a href="{8 url 'ooo’123 8}">222</a>
# 记忆
# #后端
# #有名分组反向解析写法1
# 了解
# pr int ( reverse( 'ooo' ,kwargs={'year' :123}))
# #简便的写法减少你的脑容 量消耗记跟无名一样的操作即可
# print(reverse( 'ooo' ,args=(111,)))
#============================================
# #总路由
# 空白
# from app01 import urls as app01_ urls 
# from app02 import urls as app02_ urls
# 发送至所有人。
# urlpatterns = [
# 请输入消...
# url(r'^ admin/'，admin.site.urls),
# #首页
# # url(r'^$'， views . home),
# # #无名分组反向解析
# # url(r'^index/(\d+)/',views. index, name= 'xxx'),
# # #有名分组反向解析
# # url(r'^func/(?P<year>\d+)/',views . func , name= 'ooo')
# I
# #路由分发
# # url(r'^app01/' ,include(app01_ urls))，# 只要ur1前缀是app01开头全部交
# 给app01处理
# # url(r'^app02/' ,include(app02_ _urls)) # 只要ur1前缀是app02开头全部交
# 给app02处理
# #终极写法
# 推荐使用
# url(r'^app01/' ,include( ' app01.urls')),
# url(r'^ app02/'，include( ' app02.urls'))
# #注意事项:总路由里面的ur1千万不能加%结尾


# #子路由
# # app01 urls.py
# from django.conf.urls import url
# from app01 import views
# urlpatterns = [
# url(r'^reg/' ,views. reg) I
# # app02 urls.py
# from django. conf .urls import url
# from app02 import views
# urlpatterns
# =
# d|
# url(r'^reg/' ,views . reg)
# ]


# 推荐使用
# url(r'^app01/' ,include( ' app01.urls')),
# url(r'^ app02/'，include( ' app02.urls'))

#注意事项
# 1.from django.conf.urls import url,include
# 2.urlpatterns = [
#     url(r'^app01/',include('app01.urls')),
# ]  这里app01后一定要加/,后面不能加$
# 3.路由分发后，所有反向解析的名字最后在前面加上app_别名
#============================================
# 名称空间(了解)
# #当多个应用出现了相同的别名我们研究反向解析会不会自动识别应用前缀
# 正常情况下的反向解析是没有办法自动识别前缀的
# #名称空间
# #总路由
# url(r'^app01/' , include( ' app01.urls', namespace= ' app01')),
# url(r'^ app02/' , include( ' app02.urls' ,namespace= ' app02' ))
# #解析的时候
# # app01
# urlpatterns = [
# url(r'^reg/' ,views . reg, name= ' reg')
# # app02
# urlpatterns = [
# url(r'^reg/' ,views. reg, name='reg' )
# reverse( 'app01:reg')
# reverse( ' app02:reg')
# {%url‘ app01:reg' %}
# {% url ' app02:reg' %}
# 一般情况下 有多个app的时候我们在起别名的时候会加上app的前缀
# 这样的话就能够确保多个app之间名字不冲突的问题
# urlpatterns =[
# url(r'^reg/' ,views .reg, name= ' app01_ reg' )
# ]
# ur lpatterns =[
# url(r'^reg/' ,views . reg, name= ' app02_ reg' )
#============================================
# 伪静态(了解)
# 静态网页
# 数据是写死的万年不变
# 伪静态
# 将一个动态网页伪装成静态网页
# 为什么要伪装呢?
# https: / /www cnblogs . com/ Dominic-Ji/p/9234099. html
# 伪装的目的在于增大本网站的seo查询力度
# 并且增加搜索引擎收藏本网上的概率
# 搜索引擎本质上就是一一个巨大的爬虫程序
# 总结:
# 无论你怎么优化怎么处理
# 始终还是干不过RMB玩家

